home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 145 / Gekkan Dennou Club - 2000.6 Vol. 145 (Japan).7z / Gekkan Dennou Club - 2000.6 Vol. 145 (Japan) (Track 1).bin / games / spassion / knowhow.lzh / ノウハウ / kani.bas < prev    next >
BASIC Source File  |  1993-11-10  |  8KB  |  320 lines

  1. int i,ii
  2. int sp_n
  3. int xx,yy
  4. int x=136,y=136
  5. int ax
  6. int ay=16        /*ホンタイジョウゲウンドウヨウ
  7. int kan_x(3),kan_y(3)
  8. int kan_flag(3)
  9. char  qtoc(256)
  10. int   hd32(256)
  11. int   atan_table(256)
  12. int gro_ang
  13. int   k1_table(1024)
  14. int   k2_table(1024)
  15. int   cx16(256),cy16(256)
  16. int   cx8(256) ,cy8(256)
  17. int   cx_wark(256) ,cy_wark(256)
  18. float cx(256)  ,cy(256)
  19. char pcm53(10000)
  20. int pcm53_long
  21. int kan_len      /*1カンセツアタリノspriteスウ
  22. int kan_suu      /*カンセツスウ
  23. int kan_max      /*カンセツノゼンチョウドットスウ
  24. int wark_chk_1       /*アルキショリノ カイシゲンカイテン1
  25. int wark_chk_2       /*アルキショリノ カイシゲンカイテン2
  26. int len_temp
  27. int wark_len       /*ホハバ
  28. str temp
  29. float fx,fy
  30. /*
  31. /*################[ しょきせってい ]##########################
  32. /*
  33. cls:screen 0,2,1,1:sp_disp(1):sp_on()
  34. for i=0 to 127:sp_set(i,0,0):next
  35. /*
  36. kan_suu=input2("カンセツスウ",3)
  37. kan_len=input2("1カンセツノスプライトスウ",2)
  38. kan_max=kan_suu*kan_len*16
  39. wark_chk_1=kan_max*7/8
  40. wark_chk_2=kan_max*1/3
  41. print"wark_chk_1";wark_chk_1
  42. print"wark_chk_2";wark_chk_2
  43. wark_len=input2("ホハバ",kan_max/9)
  44. /*
  45. /*
  46. /*-------------[ アークタンジェント テ-ブル make ]----------------------
  47. for i=0 to 63
  48.   fx=abs(i-32):fy=-32
  49.   if fx<>0 then  {
  50.     atan_table(i) = 65536/cos( atan(fx/fy) )
  51.   } else {
  52.     atan_table(i)=65536
  53.   }
  54. next
  55. /*
  56. /*
  57. /*#################[ FILE ]###############################
  58. /*
  59. i=chk_open("cir\cx256","r")
  60. fread(cx,256,i)
  61. i=chk_open("cir\cy256","r")
  62. fread(cy,256,i)
  63. i=chk_open("cir\HD32","r")
  64. fread(hd32,256,i)
  65. i=chk_open("cir\qtoc","r")
  66. fread(qtoc,256,i)
  67. /*
  68. temp="_"+itoa(kan_suu)+"_"+itoa(kan_len*16)
  69. i=chk_open("cir\k1"+temp,"r")
  70. fread(k1_table,256,i)
  71. i=chk_open("cir\k2"+temp,"r")
  72. fread(k2_table,256,i)
  73. i=chk_open("pcmdata\fpcm53.pcm","r")
  74. ii=fgetc(i)shl 8:pcm53_long=ii
  75. fread(pcm53,ii,i)
  76. fcloseall()
  77. /*
  78.   for i=0 to 256
  79.   cx16(i)=cx(i)*16*65536
  80.   cy16(i)=cy(i)*16*65536
  81.   cx8(i) =cx(i)*8*65536
  82.   cy8(i) =cy(i)*8*65536
  83.   cx_wark(i)=cx(i)*wark_len
  84.   cy_wark(i)=cy(i)*wark_len
  85.   next
  86. /*##################[ ざひょうしょきか ]######################
  87. /*----------[ アシヲ マバラニ ハイチスル ]---------------
  88. /*
  89.   i=(wark_chk_1-wark_chk_2)/2+wark_chk_2
  90.   kan_x(0)=x+i         :kan_y(0)=y+32
  91.   kan_x(1)=x+wark_chk_1:kan_y(1)=y+32
  92.   kan_x(2)=x-i-wark_chk_2/4:kan_y(2)=y+32
  93.   kan_x(3)=x-wark_chk_1-wark_chk_2/4:kan_y(3)=y+32
  94. /*
  95. /*##################[ MAIN ]##############################
  96. color 5
  97. print"joy_stickデイドウ"
  98. print"ナナメヲオスト speed_up"
  99. print"ボタンデ スローガカカリマス"
  100. print "キーヲオストシュウリョウデス"
  101. color 7
  102. /*
  103.   while inkey$(0)=""
  104. /*
  105. vwait2(strig(1)shl 1)
  106. i=stick(1)
  107. ax=0
  108. if i=9 then ax=3
  109. if i=3 then ax=2
  110. if i=6 then ax=1
  111. if i=7 then ax=-3
  112. if i=1 then ax=-2
  113. if i=4 then ax=-1
  114. x=x+ax
  115. y=y+(ay/8)
  116. ay=ay+sgn(136-y)
  117. sp_set(0,x and 511,y and 511,&H128,3)
  118. sp_n=sp_n+1
  119. /*========================[ ミギアシ ]===============
  120. for i=0 to 1
  121.   xx=kan_x(i)
  122.   yy=kan_y(i)
  123.   ii=kan_flag(i)
  124.   kan_put(x,y,xx,yy,0)
  125.   len_temp=abs(x-xx)
  126. /*------------[ ヒダリヘススム ]--------------
  127.   if ii=0 and len_temp>wark_chk_1 then ii=-(128+16)
  128.   if ii<0 then {
  129.      if ii=-(128+16) then a_end():a_play(pcm53,4,3,pcm53_long)
  130.      ii=ii+16
  131.      xx=xx-cx_wark(-ii)
  132.      yy=yy-cy_wark(-ii)
  133.   }
  134. /*------------[ ミギヘススム ]--------------
  135.   if ii=0 and len_temp<wark_chk_2 then ii=128+16
  136.   if ii>0 then {
  137.      if ii=128+16 then a_end():a_play(pcm53,4,3,pcm53_long)
  138.      ii=ii-16
  139.      xx=xx+cx_wark(ii)
  140.      yy=yy-cy_wark(ii)
  141.   }
  142.   kan_x(i)=xx
  143.   kan_y(i)=yy
  144.   kan_flag(i)=ii
  145. next
  146. /*========================[ ヒダリアシ ]===============
  147. for i=2 to 3
  148.   xx=kan_x(i)
  149.   yy=kan_y(i)
  150.   ii=kan_flag(i)
  151.   kan_put(x,y,xx,yy,1)
  152.   len_temp=abs(x-xx)
  153. /*------------[ ミギヘススム ]--------------
  154.   if ii=0 and len_temp>wark_chk_1 then ii=128+16
  155.   if ii>0 then {
  156.      if ii=128+16 then a_end():a_play(pcm53,4,3,pcm53_long)
  157.      ii=ii-16
  158.      xx=xx+cx_wark(ii)
  159.      yy=yy-cy_wark(ii)
  160.   }
  161. /*------------[ ヒダリヘススム ]--------------
  162.   if ii=0 and len_temp<wark_chk_2 then ii=-(128+16)
  163.   if ii<0 then {
  164.      if ii=-(128+16) then a_end():a_play(pcm53,4,3,pcm53_long)
  165.      ii=ii+16
  166.      xx=xx-cx_wark(-ii)
  167.      yy=yy-cy_wark(-ii)
  168.   }
  169.   kan_x(i)=xx
  170.   kan_y(i)=yy
  171.   kan_flag(i)=ii
  172. next
  173. /*=======================================
  174.   sp_n=0
  175.   endwhile
  176.   end
  177. /*
  178. /*
  179. /*
  180. /*
  181. /*############################################################
  182. /*#
  183. /*#  かんせつひょうじ
  184. /*#
  185. /*# kan_put(ツケネ_x,ツケネ_y,センタン_x,センタン_y,ミギマワリ(=0)or ヒダリマワリ(=1)
  186. /*# モドリチ = ツケネカラ センタンマデノ キョリ
  187. /*############################################################
  188. func kan_put(sx,sy,ex,ey,spin)
  189. int ang_main
  190. int ang,ang_h
  191. int i,j,k
  192. /*----------------------------------------
  193. i=length(ex-sx,ey-sy)
  194. if i>kan_max then i=kan_max
  195. ang_main=gro_ang
  196. sx=sx shl 16
  197. sy=sy shl 16
  198. /*:::::::::::::::::::::::::::::
  199. switch spin
  200.  case 0
  201.    ang=((ang_main shl 16)+k2_table(i)) and &hffffff
  202.    ang_add=k1_table(i)
  203.  break
  204.  default
  205.    ang=((ang_main shl 16)-k2_table(i)) and &hffffff
  206.    ang_add=-k1_table(i)
  207.  break
  208. endswitch
  209. /*-----------------------------
  210.   for j=1 to kan_suu
  211.     ang_h=(ang shr 16)and 255
  212. /*-----------------------------
  213.     for k=1 to kan_len
  214.       sx=sx+cx16(ang_h):sy=sy+cy16(ang_h)
  215.       sp_set(sp_n,((sx-cx8(ang_h))shr 16)and 511,((sy-cy8(ang_h))shr 16)and 511,&H635+hd32(ang_h),3)
  216.       sp_n=sp_n+1
  217.     next
  218. /*-----------------------------
  219.     ang=ang+ang_add
  220.   next
  221. /*:::::::::::::::::::::::::::::
  222. return(i)
  223. endfunc
  224. /*
  225. /*
  226. /*#######################################################
  227. /*
  228. /*   キョリ けいさん & かくどけいさん
  229. /*
  230. /* length(ex-sx,ey-sy)
  231. /*.......................................................
  232. /* char qtoc(255)ニ、qtoc ヲ、LOADシテオクコト。
  233. /* モドリチ1 = キョリ
  234. /* モドリチ2 = gro_ang(グローバル)ニ、(ex,ey)カラミタ(sx,sy)ノクド
  235. /*=======================================================
  236. func length(x,y)
  237. int l,abs_x,abs_y
  238. /*
  239. if x=0 then x=1
  240. if y=0 then y=1
  241. if x>0 then abs_x=x else abs_x=-x
  242. if y>0 then abs_y=y else abs_y=-y
  243. if abs_x>abs_y then {
  244.   if x>0 then {
  245.     if y>0 then {
  246.       gro_ang=&h40 + ((y shl 5)+(abs_x shr 1))/abs_x
  247.     } else {
  248.       gro_ang=&h40 + ((y shl 5)-(abs_x shr 1))/abs_x
  249.     }
  250.   } else {
  251.     if y>0 then {
  252.       gro_ang=&hC0 - ((y shl 5)+(abs_x shr 1))/abs_x
  253.     } else {
  254.       gro_ang=&hC0 - ((y shl 5)-(abs_x shr 1))/abs_x
  255.     }
  256.   }
  257.   l=abs_x*atan_table(gro_ang+32 and 63) shr 16
  258. } else {
  259.   if y>0 then {
  260.     if x>0 then {
  261.       gro_ang=&h80 - ((x shl 5)+(abs_y shr 1))/abs_y
  262.     } else {
  263.       gro_ang=&h80 - ((x shl 5)-(abs_y shr 1))/abs_y
  264.     }
  265.   } else {
  266.     if x>0 then {
  267.       gro_ang=       ((x shl 5)+(abs_y shr 1))/abs_y
  268.     } else {
  269.       gro_ang=       ((x shl 5)-(abs_y shr 1))/abs_y
  270.     }
  271.   }
  272.   l=abs_y*atan_table(gro_ang+32 and 63) shr 16
  273. }
  274. /*ーーーーーーーーーーーーーーーーー
  275. gro_ang=qtoc(gro_ang)
  276. return(l)
  277. endfunc
  278. /*
  279. /*
  280. /*##########################################################/*
  281. /* CHK_OPEN                                         /*
  282. /* chk_open( "filename","モード" )                            /*
  283. /* モードは、fopen と同じ。
  284. /*----------------------------------------------------------/*
  285. func chk_open(fname;str,mode;str)
  286. int fn
  287. /*::::::::::::::::
  288. error off
  289. fn=fopen(fname,mode)
  290. error on
  291. if fn<0 then {
  292.   width 96
  293.   color 7:beep
  294.   print fname;" が、OPENできません。"
  295.   print
  296.   print "強制終了します。( HIT ANY KEY )"
  297.   while strig(1)<>0 or strig(2)<>0 or inkey$(0)<>"":endwhile
  298.   while strig(1)=0 and strig(2)=0 and inkey$(0)="" :endwhile
  299.   end
  300. }
  301. return(fn)
  302. endfunc
  303. /*
  304. /*
  305. /*#######################################################
  306. /*
  307. /*   INPUT2
  308. /*
  309. /* input("メッセージ",デフォルトチ)
  310. /* モドリチ = ニュウリョクチ
  311. /*-------------------------------------------------------
  312. func input2(mes;str,def)
  313.   int i
  314. /*
  315.   print mes;"( デフォルト =";def;" )"
  316.   input i
  317.   if i=0 then i=def
  318.   return(i)
  319. endfunc
  320.